﻿using Common.Communal;
using MediatR;
using Scheduling.Api.Read.Application.DTO;
using System;

namespace Scheduling.Api.Read.Application.Command.ScheduleCommand
{
    /// <summary>
    /// 排班查询命令，支持多种筛选条件
    /// </summary>
    public class ScheduleCreateCommand : IRequest<ApiResult<List<ScheduleWithDetailsDTO>>>
    {
        /// <summary>
        /// 班组ID筛选
        /// </summary>
        public int? TeamId { get; set; }

        /// <summary>
        /// 班次ID筛选
        /// </summary>
        public int? ShiftId { get; set; }

        /// <summary>
        /// 开始日期筛选
        /// </summary>
        public DateTime? StartDate { get; set; }

        /// <summary>
        /// 结束日期筛选
        /// </summary>
        public DateTime? EndDate { get; set; }

        /// <summary>
        /// 是否加急排班筛选
        /// </summary>
        public bool? IsUrgentSchedule { get; set; }

        /// <summary>
        /// 是否加急订单筛选
        /// </summary>
        public bool? IsUrgentOrder { get; set; }

        /// <summary>
        /// 是否夜班筛选
        /// </summary>
        public bool? IsNightShift { get; set; }

        /// <summary>
        /// 班组名称关键字筛选
        /// </summary>
        public string? TeamNameKeyword { get; set; }

        /// <summary>
        /// 班次名称关键字筛选
        /// </summary>
        public string? ShiftNameKeyword { get; set; }
    }
}
